#pragma once

#include "BattleShip.h"

const int s_dx [4] = {0,-1,0,1};
const int s_dy [4] = {-1,0,1,0};

class IAlgorithm {
public:
	virtual void Initialize(BattleShipPtr _battle) = 0;
	virtual Point GuessPos() = 0;
	virtual void FoundPos(Point p, bool value) = 0;
	virtual void FoundShip(ShipPtr ship) = 0;
	virtual Point GuessDirection(Point lastP, Ship::Rotation& direction) = 0;
};

#if (_MSC_VER == 1700)  
typedef std::shared_ptr<IAlgorithm> AlgorithmPtr;
#else
typedef boost::shared_ptr<IAlgorithm> AlgorithmPtr;
#endif